// 用数组实现队列操作

// 为数组原型扩展一个获取第一个元素的方法
Array.prototype.peekFirst = function(){
    return this[0];
}

let queue = [] ;
console.log( '队列:' + queue.toString() );

queue.push( '刘邦' );
console.log( '队列:' + queue.toString() );

queue.push( '刘恒' );
console.log( '队列:' + queue.toString() );

queue.push( '刘启' );
console.log( '队列:' + queue.toString() );

queue.push( '刘彻' );
console.log( '队列:' + queue.toString() );

console.log( queue.peekFirst() ); // 调用扩展的方法检查队列头部元素
console.log( '队列:' + queue.toString() );

console.log( queue.shift() ); // 获取并删除队列头部元素
console.log( '队列:' + queue.toString() );

console.log( queue.shift() );
console.log( '队列:' + queue.toString() );

console.log( queue.shift() );
console.log( '队列:' + queue.toString() );

console.log( queue.shift() );
console.log( '队列:' + queue.toString() );

console.log( '- - - - - - - - - - - -' );

Array.prototype.peekLast = function(){
    return this[ this.length - 1 ];
}

queue.unshift( '李渊' ); // 在数组最前面添加元素
queue.unshift( '李世民' );
queue.unshift( '李治' );
queue.unshift( '武则天' );

console.log( '队列:' + queue.toString() );

console.log( queue.peekLast() );
console.log( '队列:' + queue.toString() );

console.log( queue.pop() );
console.log( '队列:' + queue.toString() );

console.log( queue.pop() );
console.log( '队列:' + queue.toString() );

console.log( queue.pop() );
console.log( '队列:' + queue.toString() );

console.log( queue.pop() );
console.log( '队列:' + queue.toString() );